package com.xuelang.pipeline.artifact.domain.resource.service;

import com.xuelang.pipeline.artifact.client.common.result.PageRecord;
import com.xuelang.pipeline.artifact.client.resource.dto.ToolChainQuery;
import com.xuelang.pipeline.artifact.domain.resource.ToolChain;

import java.util.List;

/**
 * 工具链领域服务类
 *
 * @author xiwen.zxg
 * @since 2024/5/15
 */
public interface ToolChainDomainService {
    /**
     * 获取工具链列表，有过滤条件
     *
     * @param currentPage
     * @param pageSize
     * @param toolChainQuery
     * @return
     */
    PageRecord<ToolChain> pageList(long currentPage, long pageSize, ToolChainQuery toolChainQuery);
    /**
     * 获取工具链列表，有过滤条件
     *
     * @param toolChainQuery
     * @return
     */
    List<ToolChain> list(ToolChainQuery toolChainQuery);

    /**
     * 新增工具链
     *
     * @param toolChain
     * @return
     */
    Boolean save(ToolChain toolChain);

    /**
     * 更新工具链
     *
     * @param toolChain
     * @return
     */
    Boolean update(ToolChain toolChain);

    /**
     * 查询工具链
     *
     * @param code
     * @return
     */
    ToolChain query(String code);
    /**
     * 删除工具链
     *
     * @param code
     * @return
     */
    Boolean delete(String code);

    /**
     * 是否存在工具链名称
     *
     * @param code
     * @param type
     * @param version
     * @return
     */
    Boolean existsVersion(String code, Integer type, String version);

}
